/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package test;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

/**
 *
 * @author Administrador
 */
public class ClienteFTP {

    public static void main(String[] args) {
        FTPClient client = new FTPClient();
        String sFTP = "10.10.17.40";
        String sUser = "proffline";
        String sPassword = "csti0212";
        SimpleDateFormat formatoDeFecha = new SimpleDateFormat("ddMMyyyy-HHmmss");
        String nombreTemporal = "_proffline_" + formatoDeFecha.format(new Date()) + "_";
        int reply = 0;
        boolean descargoCorrectamente = false;
        try {
            client.connect(sFTP);
            boolean login = client.login(sUser, sPassword);
            if (login) {
                reply = client.getReplyCode();
                if (FTPReply.isPositiveCompletion(reply)) {
                    System.out.println("Connected Success");
                    try {
                        File file = new File(nombreTemporal);
                        if (file.exists()) {
                            System.out.println("File alrdey exists closing...");
                            System.exit(1);
                        }
                        FileOutputStream dfile = new FileOutputStream(file);
                        descargoCorrectamente = client.retrieveFile("proffline", dfile);
                        dfile.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                        descargoCorrectamente = false;
                    }
                } else {
                    System.out.println("Connection Failed");
                    client.disconnect();
                }
            }
            client.logout();
            client.disconnect();
        } catch (IOException ioe) {
            ioe.printStackTrace();
            descargoCorrectamente = false;
        } finally {
            if (descargoCorrectamente) {
                File archivo = new File("proffline");
                if (archivo.delete()) {
                    System.out.println("Se limpiaron archivos antiguos");
                }
                File baseDatosDescargadaDeFTP = new File(nombreTemporal);
                File nuevaBaseDatos = new File("proffline");
                boolean estaNuevaBaseDatosCreada = baseDatosDescargadaDeFTP.renameTo(nuevaBaseDatos);
                if (estaNuevaBaseDatosCreada) {
                    System.out.println("Se actualizó la base de datos correctamente.");
                }
            }
        }
    }
}
